Stepper Dynamometer: Microstepping Mode vs. Torque

Conventional wisdom has it that stepper motor torque decreases as the number of microsteps per full step increases. One reasonably careful measurement trumps a kilo-opinion, so here’s a chart (clicky for bigger) of measurements to mull over:

Microstepping Mode vs Speed - 17PM-J034
Microstepping Mode vs Speed - 17PM-J034

Each group of like-colored dots marks the results for full, 1/2, 1/4, 1/8, and 1/16 microstepping with the same load resistance. The caret marks the full-step data point within each group. The load resistances range from a dead short (about 1 Ω due to winding resistance) on the left to 50 Ω on the right.

While I’ll grant the existence of the occasional data-collection error, it’s pretty obvious that:

  • Torque is reasonably constant regardless of microstepping mode
  • Full-step mode doesn’t produce more torque and, indeed, produces considerably less under heavy loads

Now, one can argue that the A4988 doesn’t operate in real full-step mode, because it energizes both windings at 1/√2 of the maximum current setting for each full step rather than energizing a single winding at the maximum current. That may be true, but conventional wisdom seems to not bother with such details when opining about torque, either…

As nearly as I can tell, 1/8 microstepping gives as much torque as you’re likely to get from the motor, while having reasonably smooth motion that avoids exciting mechanical resonances.

That chart (or one remarkably like it) will appear in an upcoming Circuit Cellar column. The tonnage of data supporting those dots suggests building an automated dynamometer would be a Good Idea …

5 thoughts on “Stepper Dynamometer: Microstepping Mode vs. Torque

  1. “Conventional wisdom has it that stepper motor torque decreases as the number of microsteps”

    Yes I have seen this stated many times but it is a common misconception. If you set the two coil on current the same then all other positions have the same torque and the power dissipation is also the same.

    I think the confusion comes from the chip datasheets that define the motor current as the peak value for one coil on but the motor datasheets give the maximum two coil on value.

    1. motor datasheets give the maximum two coil on value

      There’s a further confusion between rotor position and available torque: the trigonometric sum of the winding currents sets the position, but the maximum winding current sets the torque.

      The datasheet gives the torque for one energized winding; call it 100 mNm for 1 A. That means the torque required to move the rotor away from that position is 100 mNm.

      However, the Allegro driver does full stepping by energizing both windings to (1 A)/sqrt(2) = 710 mA each, so the rotor aligns between the two winding positions, each at 71 mNm of torque if they were energized separately. But the torque holding the rotor at that position isn’t 100 mNm, the trig sum of the torques, because the magnetic fields act in opposition. The stable midway position is where the two fields balance, not where they add: motion away from that position is aided by one field and opposed by the other.

      I want look at that in more detail one of these days …

  2. All the datasheets I have seen give maximum current and the holding torque for two coils on and 80C temperature rise. One coil on with 1.4 times the current gives the same holding torque and power dissipation (assuming the magnetics don’t saturate).

    Each coil is considered to contribute torque which varies as a sine wave with displacement, so the two coils only contribute sin(45) times the torque they would with the same current in their home position.

    Each coil therefore gives 50mNm for 1A in the half way position. In the one coil on position a coil would contribute 1.4 times as much and the current is also increased by 1.4 times so you get back to 100mMm.

    The rotor position is only correct when the motor has no load and is providing no net torque. The forces are balanced so i1 * sin(a) = i2 *cos(a). If the controller provides currents i1 = cos(a) and i2 = sin(a) that condition is satisfied and the rotor will rest at angle a.

    When you apply load torque you displace the rotor and the torque increases with the sin of the displacement until it slips. That point is defined as the holding torque. I think it just boils down to: the two torque contributions from the coils are sin and cos waves but when you add them you just get a sin wave with a phase shift, which is the net torque.

    1. the two coils only contribute sin(45) times the torque they would with the same current in their home position

      Maybe I understand this a bit better now… there’s nothing like a better model!

      As Jason points out, the rotor applies torque to the load only when it’s not in the position dictated by the opposition of force from the two windings. I’d been thinking of it backwards.

      I must do some doodling to see how things add up… thanks for the nudge!

      (But, having just ripped out the front bathroom sink, a plumbing & carpentry project occupies center stage…)

  3. I don’t know if I’ve posted this here before… aging brain. :-) Anyway, dynamic torque loss in a stepper comes about as the difference in angle between commutation and shaft position changes away from the optimum. If you consider what happens when, from a stop, you change a full step, the commutation angle (the relative angle of the magnetic field to the rotor) jumps immediately by 90degrees (of a cycle, not a revolution) and then the shaft begins to turn. Optimally the magnetic field would always lead the shaft by a certain amount but full-stepped steppers have integral positions and so the commutation angle bounces around the optimal shaft position by +/- 45degrees or something like that when the stepper is in motion.

    Worse, the shaft starts to lag the commutation angle almost as soon as the stepper is in motion. Higher velocity produces greater lag. Lag too much and the stepper skips a step. Different kinds of loads can affect how much lag is present. Failure to account for shaft inertia can produce improper commutation angles, too. You can’t just start pulsing the coils at any old rate and expect the stepper to just instantly go from 0 – 1000RPM. Do that and the stepper will just sit there and vibrate its general disgust at you. :-) But there is a fix for all of this.

    Anyway… I had never hear the “microstepping reduces torque” statement before. I have always understood it to be the opposite. I imagine it is particular, non-optimal microstepping implementations that have created this perception. More microsteps means you can keep the commutation angle from varying as much meaning you can keep it closer to the optimum angle. Except for the lag… That is where feedback driven commutation comes in. If you keep the commutation angle relative to shaft position locked in the optimum position through the use of some kind of position sensing, then you can obtain obscene amounts of dynamic torque from a stepper motor. Never more than the holding torque associate with two coils activated, but still incredible amounts. Further, subject to delay elements in your feedback circuit, you can see very high, useful rotational speeds out of steppers, maybe 10,000 RPM.

    Once you have taken care of the all of this, dynamic torques losses will come about due to the usual electro-magnetic losses as seen in a brushless dc servo motor which you will have just, effectively, turned your stepper motor into.

Comments are closed.